package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.*;
import com.example.vo.CollectVO;
import com.example.vo.VideoDatabaseVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
@Mapper
public interface CollectMapper extends BaseMapper<Collect> {
    /**
     * 前端、后台收藏列表
     * @param userId
     * @return
     */
    List<CollectVO> selectCollectList(@Param("userId") Integer userId);

    /**
     * 后台收藏列表(分页)
     * @return
     */
    List<CollectVO> selectCollectPage(@Param("courseName") String courseName,
                                      @Param("page") Integer page,
                                      @Param("limit") Integer limit);

    /**
     * 前端视频库页面
     * @param majorId
     * @return
     */
    List<VideoDatabaseVO> selectVideoDatabase(@Param("majorId") Integer majorId);

    /**
     * 前端课程收藏
     * @param collectId
     * @return
     */
    Integer collectCourse(@Param("collectId") Integer collectId);

    /**
     * 后端查看所有的收藏信息
     * @return
     */
    List<CollectVO> selectAll();

    /**
     * 后台修改用户收藏信息
     * @param nickName
     * @param majorName
     * @param unitName
     * @param courseName
     * @param picUrl
     * @return
     */
    Integer modifyCollect(@Param("id") Integer id,
                          @Param("nickName") String nickName,
                          @Param("majorName") String majorName,
                          @Param("unitName") String unitName,
                          @Param("courseName") String courseName,
                          @Param("picUrl") String picUrl);


    List<CollectVO> selectByPageNumSize(
            @Param("user") String courseName);

    //假删除
    Integer deleteCollect(@Param("id") Integer id);

    List<Major> selectMajorById();

    List<User> selectUser();

    List<Unit> selectUnitById(@Param("majorId") Integer majorId);

    List<Course> selectCourseById(@Param("unitId") Integer unitId);

    List<CollectVO> selectByCourseId(@Param("majorId") Integer majorId,
                                     @Param("unitId") Integer unitId,
                                     @Param("courseId") Integer courseId,
                                     @Param("userId") Integer userId,
                                     @Param("page") Integer page,
                                     @Param("limit") Integer limit);

    List<Unit> selectAllUnit();
    List<Course> selectAllCourse();
}

